The invention relates generally to the task of converting an analog video signal representing digitally generated alphanumeric character data into digital data signals and into coded values indicative of characters, and relates particularly to deriving ASCII values from a composite video signal.
In present-day computers and data processing apparatus it is commonplace to use code values to represent characters. The most commonly used code representation standard is ASCII (American Standard Code for Information Interchange), where the decimal value 65 corresponds to a capital A, 66 to a capital B, and so on. Other standards are called EBCDIC and Baudot.
While computers are readily programmed to manipulate ASCII values, and to rearrange and calculate results based on ASCII values, all such computers rely on each ASCII value having been provided somehow.
In the simple case of keyboard input, hardware generates a particular ASCII value in response to a press of a key. For example, if one presses the A key while pressing the shift key, the decimal value 65 is generated in hardware (or by a mix of hardware and software) and provided to the processor.
Another way a computer may receive an ASCII value is by reading it from a storage device such as a disk drive. There a CRC (cyclic redundancy check) capability of the hardware permits a high level of confidence regarding the ASCII value that is read.
Yet another way a computer may receive an ASCII value is through a modem. Serial data (typically eight or nine bits) are framed and latched onto a data bus and are treated as eight- or nine-bit ASCII values. A parity check often permits the recipient to have confidence in the correctness of the received characters.
Over the years the need to provide character displays for the human user of a computer system has prompted the establishment of a highly standardized so-called cathode ray tube (CRT) display. ASCII values (typically from a computer) are written into a display memory, and display hardware (or a mix of hardware and software) is dedicated to the task of generating signals that cause a raster-scan display to show characters as a function of the ASCII values. As the electron beam sweeps across the screen, the electron gun is turned on and off so as to generate light and dark areas called pixels (picture elements). The patterns of light and dark pixels form characters recognizable by the human using the same visual skills as permit recognition by the human of printed characters.
In one well known standard, the display hardware generates what is known as a composite video signal. The composite video signal contains information relating to the vertical sync (the timing signal for the electron beam to return from the lowest line of the screen to the highest line) and the horizontal sync (the timing signal for the electron beam to sweep from left to right in a given line on the screen). The composite video signal also contains analog information indicative of the desired brightness of the display at a given point, determined by the strength of the electron beam at that point.
In accordance with that standard, the CRT display receives the composite video signal and causes the electron beam to move so as to follow the horizontal and vertical position information, and causes the electron beam to have the strength provided by the brightness information. In many computer applications wherein alphanumeric text is displayed on a screen, the electron beam may have only two levels of brightness--"on" or "off".
In a typical computer generated video display signal, a computer "clock" signal is used to generate the pixels of the video signal. Characters in the display text are arranged in character spaces on the display screen which have a width corresponding to an integral number of clock pulses (for example 9 pulses). The horizontal sync signal is usually an integral number of time intervals corresponding to the character spaces, and accordingly also an integral number of clock pulses. The vertical character space for characters usually corresponds to an integral number of horizontal scan lines corresponding to the horizontal sync signal, and the vertical frame time usually also corresponds to an integral number of horizontal scan intervals.
In an environment of attempting to digitally capture the information on a digitally generated composite video signal, it is usually necessary to have a sampling clock which operates at the same clock frequency as the clock used to generate the signal. Because the pattern of video pixel dot pulses in the video signal is random (or nearly so) and varies according to the alphanumeric text, it is difficult to derive the clock signal from the video data signal.
A problem therefore arises in deriving the digital dot pattern data in digital format from a composite video signal for use in replicating that signal in another display format, for example a liquid crystal display screen, a plasma discharge display screen, a fluorescent display screen, a dot matrix printer, a laser printer, or a thermal printer.
A problem also arises if it is desired to allow a computer to make use of data generated by another data processing system, where the data processing system does not provide ASCII values but only provides an analog video signal. It is desired to do this in real time, making use of the video signal to derive ASCII values many times per second and to do so with acceptable reliability.
One attempt to solve a similar problem appears in U.S. Pat. No. 4,811,407 to Blokker, Jr. et al. Blokker shows an apparatus having a tuner for receiving broadcast television signals, and generating video and sync signals. The video signals are digitized and stored in a RAM, with addresses determined in part by the sync signals. However, Blokker would then utilize a technique of comparing the contents of a character position in RAM (a square of 16 by 16 pixels) with stored binary data representing a known character reference set. If there is a match, a code value associated with the matching reference is retrieved. Blokker apparently uses brute force, comparing quadrants of each of the 64 pixels of a character position with each of the 64 pixels of a first candidate match from the reference set, then (assuming there is no match) comparing each of the 64 pixels of the character position with each of the 64 pixels of a second candidate match from the reference set, and so on. It is not clear whether Blokker does this technique in real time for the entire screen quickly enough to keep up with the 30Hz or faster rate that screens are redrawn in broadcast television. But it seems unlikely the many thousands of comparisons required could be done in real time for successive screens full of data. Blokker seems to contemplate ignoring most of the screen full of video data, and collecting ASCII values from a single character position on the screen. Further, Blokker does not address the problem of re-creating the original clock signal for capturing the video data from the screen.
U.S. Pat. No. 32,201 to Bradley shows what might appear to be another attempt to solve the above mentioned problem. Bradley teaches a way to determine the ASCII value of a character presently displayed at a particular position on a graphics screen of a personal computer. But Bradley assumes that the computer has access to the graphics video display memory of the computer, and thus assumes that unambiguous and hiqhly reliable data are available regarding the on/off status of pixels on the display. Bradley, like Blokker above, then would make a brute-force comparison of the pixel contents and character font values in a font generation memory, and if there is a match the present position in the font generation memory is used to determine the ASCII value. The system of Bradley would be of no help in the general case where the computer that requires the ASCII values is denied access to the video display memory and the video generation clock signal, but instead only has access to the analog signal being sent to a CRT display.
Another approach is to have a human operator watch the CRT screen, recognize the characters, and type them into the computer which requires the ASCII values. This has the drawback of being labor intensive, and the greater drawback that the conversion process is error-prone and is far slower than real time.
A need exists, then, for an apparatus that permits near real-time capture of video digital dot information, recognition of screens full of displayed characters with no more information than is provided by an analog signal, derivation of ASCII values, and provision of the ASCII values for further processing and calculation.